package cn.pattern.TemplatePattern;


/**
 *
 * 模板方法是一种行为模式，父类的一个方法定义完成这个方法的步骤，
 * 但不具体实现具体细节，由子类完成各个步骤的实现，在创建子类对象时，最终实现过程是子类的方法。
 *
 * 模板方法的准备：
 *
 * ​ 1、继承关系
 *
 * ​ 2、父类是抽象类：抽象类实现了模板方法，定义了算法的估计
 *
 * ​ 3、子类继承抽象类：实现抽象方法，完成完整的算法
 */
public abstract class AbstractPerson {

    /**
     *  定义一个模板方法，用于实现这个方法的基本“骨架”
     *  每一步骤的具体实现由子类完成
     */
    public void preparedSchool(){
        getUp();
        dressing();
        eat();
    }

    //起床
    public abstract void getUp();
    //穿衣服
    public abstract void dressing();
    //吃早餐
    public abstract void eat();
}
